#include <iostream>

using namespace std;

class A {
 public:
  A() = default;
  A(int data) : _data(data){};
  ~A() = default;

  // 取地址运算符
  A* operator&() { return this; }
  const A* operator&() const { return this; }

  // 拷贝构造
  A(const A& a) { this->_data = a._data; }

  // 赋值拷贝
  A& operator=(const A& a) {
    this->_data = a._data;
    return *this;
  }

 private:
  int _data;
};

int main(int argc, char const* argv[]) {
  A a(5);
  A a2 = a; // 初始化
  A a3(a);

  A a4(0);
  a4 = a; // 赋值

  return 0;
}
